package org.vison.wonfu.framework.codestyle.rules;


import com.github.javaparser.ast.CompilationUnit;
import org.vison.wonfu.framework.codestyle.config.CheckerConfig;
import org.vison.wonfu.framework.codestyle.issue.IssueCollector;

import java.io.File;

/**
 * 代码检查规则接口，所有检查规则都需要实现此接口
 */
public interface CodeCheckRule {

    /**
     * 获取规则ID，用于在配置文件中标识规则
     */
    String getId();

    /**
     * 获取规则名称
     */
    String getName();

    /**
     * 获取规则描述
     */
    String getDescription();

    /**
     * 初始化规则，传入配置信息
     */
    void initialize(CheckerConfig config);

    /**
     * 执行检查
     * @param file 被检查的文件
     * @param compilationUnit 解析后的AST
     * @param collector 用于收集检查出的问题
     */
    void check(File file, CompilationUnit compilationUnit, IssueCollector collector);

     /**
      * 检查是否为严格模式 严格模式下只要检查不通过就是ERROR级别
      */
     boolean isStrict();
}
